package com.sanmao5.wecom.object;

import com.sanmao5.wecom.enums.NativeAgent;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NonNull;

/**
 * 简单的应用详情
 *
 * @author 黄侯淳
 * @since JDK 1.8
 */
@AllArgsConstructor
@Getter
public class SimpleAgentDetail implements AgentDetail {

    /**
     * 企业 id
     */
    @NonNull
    private final String corpId;

    /**
     * 应用密钥
     */
    @NonNull
    private final String secret;

    /**
     * 应用id
     */
    @NonNull
    private final String agentId;


    /**
     * 获取内置基础应用
     *
     * @param corpId 企业 id
     * @param secret 应用密钥
     * @param agent  内置的应用
     * @return 应用详情
     */
    @Deprecated
    public static AgentDetail nativeAgent(String corpId, String secret, NativeAgent agent) {
        return new SimpleAgentDetail(corpId, secret, agent.getAgentId());
    }

    /**
     * 获取自定义企业应用
     *
     * @param corpId  企业 id
     * @param secret  应用密钥
     * @param agentId 应用 ID
     * @return 应用详情
     */
    public static AgentDetail of(String corpId, String secret, String agentId) {
        return new SimpleAgentDetail(corpId, secret, agentId);
    }

}
